home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / demo / wemdemo4.zip / INFO / LEMACS.3 (.txt) < prev    next >
GNU Info File  |  1994-09-21  |  49KB  |  843 lines

  1. This is Info file ../info/lemacs, produced by Makeinfo-1.55 from the
  2. input file lemacs.txi.
  3.    This file documents the GNU Emacs editor.
  4.    Copyright (C) 1985, 1986, 1988 Richard M. Stallman.  Copyright (C)
  5. 1991, 1992 Lucid, Inc.
  6.    Permission is granted to make and distribute verbatim copies of this
  7. manual provided the copyright notice and this permission notice are
  8. preserved on all copies.
  9.    Permission is granted to copy and distribute modified versions of
  10. this manual under the conditions for verbatim copying, provided also
  11. that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
  12. General Public License" are included exactly as in the original, and
  13. provided that the entire resulting derived work is distributed under the
  14. terms of a permission notice identical to this one.
  15.    Permission is granted to copy and distribute translations of this
  16. manual into another language, under the above conditions for modified
  17. versions, except that the sections entitled "The GNU Manifesto",
  18. "Distribution" and "GNU General Public License" may be included in a
  19. translation approved by the author instead of in the original English.
  20. File: lemacs,  Node: Minibuffer,  Next: M-x,  Prev: Undo,  Up: Top
  21. The Minibuffer
  22. **************
  23.    Emacs commands use the "minibuffer" to read arguments more
  24. complicated than a single number.  Minibuffer arguments can be file
  25. names, buffer names, Lisp function names, Emacs command names, Lisp
  26. expressions, and many other things, depending on the command reading the
  27. argument.  To edit the argument in the minibuffer, you can use Emacs
  28. editing commands.
  29.    When the minibuffer is in use, it appears in the echo area, and the
  30. cursor moves there.  The beginning of the minibuffer line displays a
  31. "prompt" indicating what kind of input you should supply and how it
  32. will be used.  The prompt is often derived from the name of the command
  33. the argument is for.  The prompt normally ends with a colon.
  34.    Sometimes a "default argument" appears in parentheses after the
  35. colon; it too is part of the prompt.  The default is used as the
  36. argument value if you enter an empty argument (e.g., just type RET).
  37. For example, commands that read buffer names always show a default,
  38. which is the name of the buffer that will be used if you type just RET.
  39.    The simplest way to give a minibuffer argument is to type the text
  40. you want, terminated by RET to exit the minibuffer.  To get out of the
  41. minibuffer and cancel the command that it was for, type `C-g'.
  42.    Since the minibuffer uses the screen space of the echo area, it can
  43. conflict with other ways Emacs customarily uses the echo area.  Here is
  44. how Emacs handles such conflicts:
  45.    * If a command gets an error while you are in the minibuffer, this
  46.      does not cancel the minibuffer.  However, the echo area is needed
  47.      for the error message and therefore the minibuffer itself is
  48.      hidden for a while.  It comes back after a few seconds, or as soon
  49.      as you type anything.
  50.    * If you use a command in the minibuffer whose purpose is to print a
  51.      message in the echo area (for example `C-x =') the message is
  52.      displayed normally, and the minibuffer is hidden for a while.  It
  53.      comes back after a few seconds, or as soon as you type anything.
  54.    * Echoing of keystrokes does not take place while the minibuffer is
  55.      in use.
  56. * Menu:
  57. * File: Minibuffer File.  Entering file names with the minibuffer.
  58. * Edit: Minibuffer Edit.  How to edit in the minibuffer.
  59. * Completion::          An abbreviation facility for minibuffer input.
  60. * Repetition::          Re-executing commands that used the minibuffer.
  61. File: lemacs,  Node: Minibuffer File,  Next: Minibuffer Edit,  Prev: Minibuffer,  Up: Minibuffer
  62. Minibuffers for File Names
  63. ==========================
  64.    Sometimes the minibuffer starts out with text in it.  For example,
  65. when you are supposed to give a file name, the minibuffer starts out
  66. containing the "default directory", which ends with a slash.  This
  67. informs you in which directory the file will be found if you do not
  68. specify one.  For example, the minibuffer might start out with
  69.      Find File: /u2/emacs/src/
  70. where `Find File: ' is the prompt.  Typing `buffer.c' specifies the file
  71. `/u2/emacs/src/buffer.c'.  To find files in nearby directories, use
  72. `..'; thus, if you type `../lisp/simple.el', the file that you visit
  73. will be the one named
  74. `/u2/emacs/lisp/simple.el'.  Alternatively, you can use  `M-DEL' to
  75. kill directory names you don't want (*note Words::.).
  76.    You can also type an absolute file name, one starting with a slash
  77. or a tilde, ignoring the default directory.  For example, to find the
  78. file `/etc/termcap', just type the name, giving
  79.      Find File: /u2/emacs/src//etc/termcap
  80. Two slashes in a row are not normally meaningful in Unix file names, but
  81. they are allowed in GNU Emacs.  They mean, "ignore everything before the
  82. second slash in the pair."  Thus, `/u2/emacs/src/' is ignored, and you
  83. get the file `/etc/termcap'.
  84.    If you set `insert-default-directory' to `nil', the default
  85. directory is not inserted in the minibuffer.  This way, the minibuffer
  86. starts out empty.  But the name you type, if relative, is still
  87. interpreted with respect to the same default directory.
  88. File: lemacs,  Node: Minibuffer Edit,  Next: Completion,  Prev: Minibuffer File,  Up: Minibuffer
  89. Editing in the Minibuffer
  90. =========================
  91.    The minibuffer is an Emacs buffer (albeit a peculiar one), and the
  92. usual Emacs commands are available for editing the text of an argument
  93. you are entering.
  94.    Since RET in the minibuffer is defined to exit the minibuffer, you
  95. must use `C-o' or `C-q LFD' to insert a newline into the minibuffer.
  96. (Recall that a newline is really the LFD character.)
  97.    The minibuffer has its own window which always has space on the
  98. screen but acts as if it were not there when the minibuffer is not in
  99. use.  When the minibuffer is in use. The minibuffer window is just like
  100. the others; you can switch to another window with `C-x o', edit text in
  101. other windows and perhaps even visit more files, before returning to the
  102. minibuffer to submit the argument.  You can kill text in another window,
  103. return to the minibuffer window, and then yank the text to use it in the
  104. argument.  *Note Windows::.
  105.    There are, however, some restrictions on the use of the minibuffer
  106. window.  You cannot switch buffers in it--the minibuffer and its window
  107. are permanently attached.  You also cannot split or kill the minibuffer
  108. window, but you can make it taller with `C-x ^'.
  109.    If you are in the minibuffer and issue a command that displays help
  110. text in another window, that window will be scrolled if you type
  111. `C-M-v' while in the minibuffer until you exit the minibuffer.  This
  112. feature is helpful if a completing minibuffer gives you a long list of
  113. possible completions.
  114.    If the variable `minibuffer-confirm-incomplete' is `true', you are
  115. asked for confirmation if there is no known completion for the text you
  116. typed. For example, if you attempted to visit a non-existent file, the
  117. minibuffer might read:
  118.              Find File:chocolate_bar.c [no completions, confirm]
  119.    If you press `Return' again, that confirms the filename. Otherwise,
  120. you can continue editing it.
  121.    Emacs supports recursive use of the minibuffer.  However, it is easy
  122. to do this by accident (because of autorepeating keyboards, for
  123. example) and get confused.  Therefore, most Emacs commands that use the
  124. minibuffer refuse to operate if the minibuffer window is selected.  If
  125. the minibuffer is active but you have switched to a different window,
  126. recursive use of the minibuffer is allowed--if you know enough to try
  127. to do this, you probably will not get confused.
  128.    If you set the variable `enable-recursive-minibuffers' to be
  129. non-`nil', recursive use of the minibuffer is always allowed.
  130. File: lemacs,  Node: Completion,  Next: Repetition,  Prev: Minibuffer Edit,  Up: Minibuffer
  131. Completion
  132. ==========
  133.    When appropriate, the minibuffer provides a "completion" facility.
  134. You type the beginning of an argument and one of the completion keys,
  135. and Emacs visibly fills in the rest, depending on what you have already
  136. typed.
  137.    When completion is available, certain keys--TAB, RET, and SPC--are
  138. redefined to complete an abbreviation present in the minibuffer into a
  139. longer string that it stands for, by matching it against a set of
  140. "completion alternatives" provided by the command reading the argument.
  141. `?' is defined to display a list of possible completions of what you
  142. have inserted.
  143.    For example, when the minibuffer is being used by `Meta-x' to read
  144. the name of a command, it is given a list of all available Emacs command
  145. names to complete against.  The completion keys match the text in the
  146. minibuffer against all the command names, find any additional
  147. characters of the name that are implied by the ones already present in
  148. the minibuffer, and add those characters to the ones you have given.
  149.    Case is normally significant in completion, because it is
  150. significant in most of the names that you can complete (buffer names,
  151. file names and command names).  Thus, `fo' will not complete to `Foo'.
  152. When you are completing a name in which case does not matter, case may
  153. be ignored for completion's sake if specified by program.
  154.    When a completion list is displayed, the completions will highlight
  155. as you move the mouse over them.  Clicking middle on any highlighted
  156. completion will "select" it just as if you had typed it in and hit RET.
  157. Completion Example
  158. ------------------
  159.    Consider the following example.  If you type `Meta-x au TAB', TAB
  160. looks for alternatives (in this case, command names) that start with
  161. `au'.  There are only two commands: `auto-fill-mode' and
  162. `auto-save-mode'.  They are the same as far as `auto-', so the `au' in
  163. the minibuffer changes to `auto-'.
  164.    If you type TAB again immediately, there are multiple possibilities
  165. for the very next character--it could be `s' or `f'--so no more
  166. characters are added; but a list of all possible completions is
  167. displayed in another window.
  168.    If you go on to type `f TAB', this TAB sees `auto-f'.  The only
  169. command name starting this way is `auto-fill-mode', so completion
  170. inserts the rest of that command.  You now have `auto-fill-mode' in the
  171. minibuffer after typing just `au TAB f TAB'.  Note that TAB has this
  172. effect because in the minibuffer it is bound to the function
  173. `minibuffer-complete' when completion is supposed to be done.
  174. Completion Commands
  175. -------------------
  176.    Here is a list of all the completion commands defined in the
  177. minibuffer when completion is available.
  178. `TAB'
  179.      Complete the text in the minibuffer as much as possible
  180.      (`minibuffer-complete').
  181. `SPC'
  182.      Complete the text in the minibuffer but don't add or fill out more
  183.      than one word (`minibuffer-complete-word').
  184. `RET'
  185.      Submit the text in the minibuffer as the argument, possibly
  186.      completing first as described below
  187.      (`minibuffer-complete-and-exit').
  188.      Print a list of all possible completions of the text in the
  189.      minibuffer (`minibuffer-list-completions').
  190. `button2'
  191.      Select the highlighted text under the mouse as a minibuffer
  192.      response.  When the minibuffer is being used to prompt the user
  193.      for a completion, any valid completions which are visible on the
  194.      screen will highlight when the mouse moves over them.  Clicking
  195.      button2 will select the highlighted completion and exit the
  196.      minibuffer.  (`minibuf-select-highlighted-completion').
  197.    SPC completes similar to TAB, but never goes beyond the next hyphen
  198. or space.  If you have `auto-f' in the minibuffer and type SPC, it
  199. finds that the completion is `auto-fill-mode', but it stops completing
  200. after `fill-'. The result is `auto-fill-'.  Another SPC at this point
  201. completes all the way to `auto-fill-mode'.  SPC in the minibuffer runs
  202. the function `minibuffer-complete-word' when completion is available.
  203.    There are three different ways that RET can work in completing
  204. minibuffers, depending on how the argument will be used.
  205.    * "Strict" completion is used when it is meaningless to give any
  206.      argument except one of the known alternatives.  For example, when
  207.      `C-x k' reads the name of a buffer to kill, it is meaningless to
  208.      give anything but the name of an existing buffer.  In strict
  209.      completion, RET refuses to exit if the text in the minibuffer does
  210.      not complete to an exact match.
  211.    * "Cautious" completion is similar to strict completion, except that
  212.      RET exits only if the text was an exact match already, not needing
  213.      completion.  If the text is not an exact match, RET does not exit,
  214.      but it does complete the text.  If it completes to an exact match,
  215.      a second RET will exit.
  216.      Cautious completion is used for reading file names for files that
  217.      must already exist.
  218.    * "Permissive" completion is used when any string is meaningful, and
  219.      the list of completion alternatives is just a guide.  For example,
  220.      when `C-x C-f' reads the name of a file to visit, any file name is
  221.      allowed, in case you want to create a file.  In permissive
  222.      completion, RET takes the text in the minibuffer exactly as given,
  223.      without completing it.
  224.    The completion commands display a list of all possible completions
  225. in a window whenever there is more than one possibility for the very
  226. next character.  Typing `?' explicitly requests such a list.  The list
  227. of completions counts as help text, so `C-M-v' typed in the minibuffer
  228. scrolls the list.
  229.    When completion is done on file names, certain file names are usually
  230. ignored.  The variable `completion-ignored-extensions' contains a list
  231. of strings; a file whose name ends in any of those strings is ignored
  232. as a possible completion.  The standard value of this variable has
  233. several elements including `".o"', `".elc"', `".dvi"' and `"~"'.  The
  234. effect is that, for example, `foo' completes to `foo.c' even though
  235. `foo.o' exists as well.  If the only possible completions are files
  236. that end in "ignored" strings, they are not ignored.
  237.    If a completion command finds the next character is undetermined, it
  238. automatically displays a list of all possible completions.  If the
  239. variable `completion-auto-help' is set to `nil', this does not happen,
  240. and you must type `?' to display the possible completions.
  241.    If the variable `minibuffer-confirm-incomplete' is set to true, then
  242. in contexts where `completing-read' allows answers that are not valid
  243. completions, an extra RET must be typed to confirm the response.  This
  244. is helpful for catching typos, etc.
  245. File: lemacs,  Node: Repetition,  Prev: Completion,  Up: Minibuffer
  246. Repeating Minibuffer Commands
  247. =============================
  248.    Every command that uses the minibuffer at least once is recorded on a
  249. special history list, together with the values of the minibuffer
  250. arguments, so that you can repeat the command easily.  In particular,
  251. every use of `Meta-x' is recorded, since `M-x' uses the minibuffer to
  252. read the command name.
  253. `C-x ESC'
  254.      Re-execute a recent minibuffer command
  255.      (`repeat-complex-command').
  256. `M-p'
  257.      Within `C-x ESC', move to previous recorded command
  258.      (`previous-complex-command').
  259. `M-n'
  260.      Within `C-x ESC', move to the next (more recent) recorded command
  261.      (`next-complex-command').
  262. `M-x list-command-history'
  263.      Display the entire command history, showing all the commands `C-x
  264.      ESC' can repeat, most recent first.
  265.    `C-x ESC' is used to re-execute a recent command that used the
  266. minibuffer. With no argument, it repeats the last command.  A numeric
  267. argument specifies which command to repeat; 1 means the last one, and
  268. larger numbers specify earlier commands.
  269.    `C-x ESC' works by turning the previous command into a Lisp
  270. expression and then entering a minibuffer initialized with the text for
  271. that expression.  If you type just RET, the command is repeated as
  272. before.  You can also change the command by editing the Lisp expression.
  273. The expression you finally submit will be executed.  The repeated
  274. command is added to the front of the command history unless it is
  275. identical to the most recently executed command already there.
  276.    Even if you don't understand Lisp syntax, it will probably be obvious
  277. which command is displayed for repetition.  If you do not change the
  278. text, you can be sure the command will repeat exactly as before.
  279.    If you are in the minibuffer for `C-x ESC' and the command shown to
  280. you is not the one you want to repeat, you can move around the list of
  281. previous commands using `M-n' and `M-p'.  `M-p' replaces the contents
  282. of the minibuffer with the next earlier recorded command, and `M-n'
  283. replaces it with the next later command.  After finding the desired
  284. previous command, you can edit its expression and then resubmit it by
  285. typing RET.  Any editing you have done on the command to be repeated is
  286. lost if you use `M-n' or `M-p'.
  287.    `M-n' and `M-p' are specially defined within `C-x ESC' to run the
  288. commands `previous-complex-command' and `next-complex-command'.
  289.    The list of previous commands using the minibuffer is stored as a
  290. Lisp list in the variable `command-history'.  Each element of the list
  291. is a Lisp expression which describes one command and its arguments.
  292. Lisp programs can reexecute a command by feeding the corresponding
  293. `command-history' element to `eval'.
  294. File: lemacs,  Node: M-x,  Next: Help,  Prev: Minibuffer,  Up: Top
  295. Running Commands by Name
  296. ************************
  297.    The Emacs commands that are used often or that must be quick to type
  298. are bound to keys--short sequences of characters--for convenient use.
  299. Other Emacs commands that are used more rarely are not bound to keys;
  300. to run them, you must refer to them by name.
  301.    A command name consists, by convention, of one or more words,
  302. separated by hyphens; for example, `auto-fill-mode' or `manual-entry'.
  303. The use of English words makes the command name easier to remember than
  304. a key made up of obscure characters, even though it results in more
  305. characters to type.  You can run any command by name, even if it can be
  306. run by keys as well.
  307.    To run a command by name, to start with `M-x', then type the command
  308. name, and finish with RET.  `M-x' uses the minibuffer to read the
  309. command name.  RET exits the minibuffer and runs the command.
  310.    Emacs uses the minibuffer for reading input for many different
  311. purposes; on this occasion, the string `M-x' is displayed at the
  312. beginning of the minibuffer as a "prompt" to remind you that your input
  313. should be the name of a command to be run.  *Note Minibuffer::, for
  314. full information on the features of the minibuffer.
  315.    You can use completion to enter a command name.  For example, to
  316. invoke the command `forward-char', type:
  317.      M-x forward-char RET
  318.    or
  319.      M-x fo TAB c RET
  320. Note that `forward-char' is the same command that you invoke with the
  321. key `C-f'.  You can call any command (interactively callable function)
  322. defined in Emacs by its name using `M-x' whether or not any keys are
  323. bound to it.
  324.    If you type `C-g' while Emacs reads the command name, you cancel the
  325. `M-x' command and get out of the minibuffer, ending up at top level.
  326.    To pass a numeric argument to a command you are invoking with `M-x',
  327. specify the numeric argument before the `M-x'.  `M-x' passes the
  328. argument along to the function that it calls.  The argument value
  329. appears in the prompt while the command name is being read.
  330.    You can use the command `M-x interactive' to specify a way of
  331. parsing arguments for interactive use of a function.  For example, write
  332.        (defun foo (arg) "Doc string" (interactive "p") ...use arg...)
  333.    to make ARG be the prefix argument when `foo' is called as a
  334. command.  The call to `interactive' is actually a declaration rather
  335. than a function; it tells `call-interactively' how to read arguments to
  336. pass to the function.  When actually called, `interactive' returns
  337. `nil'.
  338.    The argument of INTERACTIVE is usually a string containing a code
  339. letter followed by a prompt.  Some code letters do not use I/O to get
  340. the argument and do not need prompts.  To prompt for multiple arguments,
  341. you must provide a code letter, its prompt, a newline, and another code
  342. letter, etc.  If the argument is not a string, it is evaluated to get a
  343. list of arguments to pass to the function.  If you do not provide an
  344. argument to `interactive', no arguments are passed when calling
  345. interactively.
  346.    Available code letters are:
  347.      Function name: symbol with a function definition.
  348.      Name of existing buffer.
  349.      Name of buffer, possibly nonexistent.
  350.      Character.
  351.      Command name: symbol with interactive function definition.
  352.      Value of point as number.  Does not do I/O.
  353.      Directory name.
  354.      Last mouse event.
  355.      Existing file name.
  356.      Possibly nonexistent file name.
  357.      Key sequence (string).
  358.      Value of mark as number.  Does not do I/O.
  359.      Number read using minibuffer.
  360.      Prefix arg converted to number, or if none, do like code `n'.
  361.      Prefix arg converted to number.  Does not do I/O.
  362.      Prefix arg in raw form.  Does not do I/O.
  363.      Region: point and mark as two numeric arguments, smallest first.
  364.      Does not do I/O.
  365.      Any string.
  366.      Any symbol.
  367.      Variable name: symbol that is `user-variable-p'.
  368.      Lisp expression read but not evaluated.
  369.      Lisp expression read and evaluated.
  370.    In addition, if the string begins with `*', an error is signaled if
  371. the buffer is read-only.  This happens before reading any arguments.
  372. If the string begins with `@', the window the mouse is over is selected
  373. before anything else is done.  You may use both `@' and `*'; they are
  374. processed in the order that they appear.
  375.    Normally, when describing a command that is run by name, we omit the
  376. RET that is needed to terminate the name.  Thus we may refer to `M-x
  377. auto-fill-mode' rather than `M-x auto-fill-mode' RET.  We mention the
  378. RET only when it it necessary to emphasize its presence, for example,
  379. when describing a sequence of input that contains a command name and
  380. arguments that follow it.
  381.    `M-x' is defined to run the command `execute-extended-command',
  382. which is responsible for reading the name of another command and
  383. invoking it.
  384. File: lemacs,  Node: Help,  Next: Mark,  Prev: M-x,  Up: Top
  385.    Emacs provides extensive help features which revolve around a single
  386. character, `C-h'.  `C-h' is a prefix key that is used only for
  387. documentation-printing commands.  The characters you can type after
  388. `C-h' are called "help options".  One help option is `C-h'; you use it
  389. to ask for help about using `C-h'.
  390.    `C-h C-h' prints a list of the possible help options, and then asks
  391. you to type the desired option.  It prompts with a string
  392.      A, B, C, F, I, K, L, M, N, S, T, V, W, C-c, C-d, C-n, C-w or C-h for more help:
  393. You should type one of those characters.
  394.    Typing a third `C-h' displays a description of what the options mean;
  395. Emacs still waits for you to type an option.  To cancel, type `C-g'.
  396.    Here is a summary of the defined help commands.
  397. `C-h a STRING RET'
  398.      Display list of commands whose names contain STRING (`command-
  399.      apropos').
  400. `C-h b'
  401.      Display a table of all key bindings in effect now; local bindings
  402.      of the current major mode first, followed by all global bindings
  403.      (`describe-bindings').
  404. `C-h c KEY'
  405.      Print the name of the command that KEY runs (`describe-key-
  406.      briefly').  `c' is for `character'.  For more extensive
  407.      information on KEY, use `C-h k'.
  408. `C-h f FUNCTION RET'
  409.      Display documentation on the Lisp function named FUNCTION
  410.      (`describe-function').  Note that commands are Lisp functions, so
  411.      a command name may be used.
  412. `C-h i'
  413.      Run Info, the program for browsing documentation files (`info').
  414.      The complete Emacs manual is available on-line in Info.
  415. `C-h k KEY'
  416.      Display name and documentation of the command KEY runs
  417.      (`describe-key').
  418. `C-h l'
  419.      Display a description of the last 100 characters you typed
  420.      (`view-lossage').
  421. `C-h m'
  422.      Display documentation of the current major mode (`describe-mode').
  423. `C-h n'
  424.      Display documentation of Emacs changes, most recent first
  425.      (`view-emacs-news').
  426. `C-h p'
  427.      Display a table of all mouse bindings in effect now; local bindings
  428.      of the current major mode first, followed by all global bindings
  429.      (`describe-pointer').
  430. `C-h s'
  431.      Display current contents of the syntax table, plus an explanation
  432.      of what they mean (`describe-syntax').
  433. `C-h t'
  434.      Display the Emacs tutorial (`help-with-tutorial').
  435. `C-h v VAR RET'
  436.      Display the documentation of the Lisp variable VAR (`describe-
  437.      variable').
  438. `C-h w COMMAND RET'
  439.      Print which keys run the command named COMMAND (`where-is').
  440. Documentation for a Key
  441. =======================
  442.    The most basic `C-h' options are `C-h c' (`describe-key-briefly')
  443. and `C-h k'
  444. (`describe-key').  `C-h c KEY' prints the name of the command that KEY
  445. is bound to in the echo area.  For example, `C-h c C-f' prints
  446. `forward-char'.  Since command names are chosen to describe what the
  447. command does, using this option is a good way to get a somewhat cryptic
  448. description of what KEY does.
  449.    `C-h k KEY' is similar to `C-h c' but gives more information.  It
  450. displays the documentation string of the function KEY is bound to as
  451. well as its name.  KEY is a string or vector of events.  When called
  452. interactvely, KEY may also be a menu selection.  This information does
  453. not usually fit into the echo area, so a window is used for the display.
  454. Help by Command or Variable Name
  455. ================================
  456.    `C-h f' (`describe-function') reads the name of a Lisp function
  457. using the minibuffer, then displays that function's documentation
  458. string in a window.  Since commands are Lisp functions, you can use the
  459. argument FUNCTION to get the documentation of a command that you know
  460. by name.  For example,
  461.      C-h f auto-fill-mode RET
  462. displays the documentation for `auto-fill-mode'. Using `C-h f' is the
  463. only way to see the documentation of a command that is not bound to any
  464. key, that is, a command you would normally call using `M-x'.  If the
  465. variable `describe-function-show-arglist' is `t', `describe-function'
  466. shows its arglist if the FUNCTION is not an autoload function.
  467.    `C-h f' is also useful for Lisp functions you are planning to use in
  468. a Lisp program.  For example, if you have just written the code
  469. `(make-vector len)' and want to make sure you are using `make-vector'
  470. properly, type `C-h f make-vector RET'.  Because `C-h f' allows all
  471. function names, not just command names, you may find that some of your
  472. favorite abbreviations that work in `M-x' don't work in `C-h f'.  An
  473. abbreviation may be unique among command names, yet fail to be unique
  474. when other function names are allowed.
  475.    If you type RET, leaving the minibuffer empty, `C-h f' by default
  476. describes the function called by the innermost Lisp expression in the
  477. buffer around point, provided that is a valid, defined Lisp function
  478. name.  For example, if point is located following the text
  479. `(make-vector (car x)', the innermost list containing point is the one
  480. starting with `(make-vector', so the default is to describe the
  481. function `make-vector'.
  482.    `C-h f' is often useful just to verify that you have the right
  483. spelling for the function name.  If `C-h f' mentions a default in the
  484. prompt, you have typed the name of a defined Lisp function.  If that is
  485. what you wanted to know, just type `C-g' to cancel the `C-h f' command
  486. and continue editing.
  487.    `C-h w COMMAND RET' tells you what keys are bound to COMMAND.  It
  488. prints a list of the keys in the echo area.  Alternatively, it informs
  489. you that a command is not bound to any keys, which implies that you
  490. must use `M-x' to call the command.
  491.    `C-h v' (`describe-variable') is like `C-h f' but describes Lisp
  492. variables instead of Lisp functions.  Its default is the Lisp symbol
  493. around or before point, if that is the name of a known Lisp variable.
  494. *Note Variables::.
  495. Apropos
  496. =======
  497.    It is possible to ask a question like, "What are the commands for
  498. working with files?"  To do this, type `C-h a file RET', which displays
  499. a list of all command names that contain `file', such as `copy-file',
  500. `find-file', and so on.  With each command name a brief description of
  501. its use and information on the keys you can use to invoke it is
  502. displayed.  For example, you would be informed that you can invoke
  503. `find-file' by typing `C-x C-f'.  The `a' in `C-h a' stands for
  504. `Apropos'; `C-h a' runs the Lisp function `command-apropos'.
  505.    Because `C-h a' looks only for functions whose names contain the
  506. string you specify, you must use ingenuity in choosing the string.  If
  507. you are looking for commands for killing backwards and `C-h a
  508. kill-backwards RET' doesn't reveal any commands, don't give up.  Try
  509. just `kill', or just `backwards', or just `back'.  Be persistent.
  510. Pretend you are playing Adventure.  Also note that you can use a
  511. regular expression as the argument (*note Regexps::.).
  512.    Here is a set of arguments to give to `C-h a' that covers many
  513. classes of Emacs commands, since there are strong conventions for naming
  514. standard Emacs commands.  By giving you a feeling for the naming
  515. conventions, this set of arguments can also help you develop a
  516. technique for picking `apropos' strings.
  517.      char, line, word, sentence, paragraph, region, page, sexp, list,
  518.      defun, buffer, screen, window, file, dir, register, mode,
  519.      beginning, end, forward, backward, next, previous, up, down,
  520.      search, goto, kill, delete, mark, insert, yank, fill, indent, case,
  521.      change, set, what, list, find, view, describe.
  522.    To list all Lisp symbols that contain a match for a regexp, not just
  523. the ones that are defined as commands, use the command `M-x apropos'
  524. instead of `C-h a'.
  525. Other Help Commands
  526. ===================
  527.    `C-h i' (`info') runs the Info program, which is used for browsing
  528. through structured documentation files.  The entire Emacs manual is
  529. available within Info.  Eventually all the documentation of the GNU
  530. system will be available.  Type `h' after entering Info to run a
  531. tutorial on using Info.
  532.    If something surprising happens, and you are not sure what commands
  533. you typed, use `C-h l' (`view-lossage').  `C-h l' prints the last 100
  534. command characters you typed.  If you see commands you don't know, use
  535. `C-h c' to find out what they do.
  536.    Emacs has several major modes. Each mode redefines a few keys and
  537. makes a few other changes in how editing works.  `C-h m'
  538. (`describe-mode') prints documentation on the current major mode, which
  539. normally describes all the commands that are changed in this mode.
  540.    `C-h b' (`describe-bindings') and `C-h s' (`describe-syntax')
  541. present information about the current Emacs mode that is not covered by
  542. `C-h m'.  `C-h b' displays a list of all key bindings now in effect;
  543. the local bindings of the current major mode first, followed by the
  544. global bindings (*note Key Bindings::.).  `C-h s' displays the contents
  545. of the syntax table, with explanations of each character's syntax
  546. (*note Syntax::.).
  547.    The other `C-h' options display various files of useful information.
  548. `C-h C-w' displays details on the complete absence of warranty for GNU
  549. Emacs.  `C-h n' (`view-emacs-news') displays the file `emacs/etc/NEWS',
  550. which contains documentation on Emacs changes arranged chronologically.
  551. `C-h t' (`help-with-tutorial') displays the learn-by-doing Emacs
  552. tutorial.  `C-h C-c' (`describe-copying') displays the file
  553. `emacs/etc/COPYING', which tells you the conditions you must obey in
  554. distributing copies of Emacs.  `C-h C-d' (`describe-distribution')
  555. displays another file named `emacs/etc/DISTRIB', which tells you how
  556. you can order a copy of the latest version of Emacs.
  557. File: lemacs,  Node: Mark,  Next: Killing,  Prev: Help,  Up: Top
  558. Selecting Text
  559. **************
  560.    Many Emacs commands operate on an arbitrary contiguous part of the
  561. current buffer. You can select text in two ways:
  562.    * You use special keys to select text by defining a region between
  563.      point and the mark.
  564.    * If you are running Lucid GNU Emacs under X, you can also select
  565.      text with the mouse.
  566. The Mark and the Region
  567. =======================
  568.    To specify the text for a command to operate on, set "the mark" at
  569. one end of it, and move point to the other end.  The text between point
  570. and the mark is called "the region".  You can move point or the mark to
  571. adjust the boundaries of the region.  It doesn't matter which one is
  572. set first chronologically, or which one comes earlier in the text.
  573.    Once the mark has been set, it remains until it is set again at
  574. another place.  The mark remains fixed with respect to the preceding
  575. character if text is inserted or deleted in a buffer.  Each Emacs
  576. buffer has its own mark; when you return to a buffer that had been
  577. selected previously, it has the same mark it had before.
  578.    Many commands that insert text, such as `C-y' (`yank') and `M-x
  579. insert-buffer', position the mark at one end of the inserted text--the
  580. opposite end from where point is positioned, so that the region
  581. contains the text just inserted.
  582.    Aside from delimiting the region, the mark is useful for marking a
  583. spot that you may want to go back to.  To make this feature more useful,
  584. Emacs remembers 16 previous locations of the mark in the `mark ring'.
  585. * Menu:
  586. * Setting Mark::    Commands to set the mark.
  587. * Using Region::    Summary of ways to operate on contents of the region.
  588. * Marking Objects::    Commands to put region around textual units.
  589. * Mark Ring::       Previous mark positions saved so you can go back there.
  590. * Using X Selections::  Using the mouse to mark a region if running under X.
  591. File: lemacs,  Node: Setting Mark,  Next: Using Region,  Prev: Mark,  Up: Mark
  592. Setting the Mark
  593. ----------------
  594.    Here are some commands for setting the mark:
  595. `C-SPC'
  596.      Set the mark where point is (`set-mark-command').
  597. `C-@'
  598.      The same.
  599. `C-x C-x'
  600.      Interchange mark and point (`exchange-point-and-mark').
  601. `C-<'
  602.      Pushes a mark at the beginning of the buffer.
  603. `C->'
  604.      Pushes a mark at the end of the buffer.
  605.    For example, to convert part of the buffer to all upper-case, you
  606. can use the `C-x C-u' (`upcase-region') command, which operates on the
  607. text in the region.  First go to the beginning of the text you want to
  608. capitalize and type `C-SPC' to put the mark there, then move to the
  609. end, and then type `C-x C-u' to capitalize the selected region.  You
  610. can also set the mark at the end of the text, move to the beginning,
  611. and then type `C-x C-u'.  Most commands that operate on the text in the
  612. region have the word `region' in their names.
  613.    The most common way to set the mark is with the `C-SPC' command
  614. (`set-mark-command').  This command sets the mark where point is. You
  615. can then move point away, leaving the mark behind.  It is actually
  616. incorrect to speak of the character `C-SPC'; there is no such
  617. character.  When you type SPC while holding down CTRL, you get the
  618. character `C-@' on most terminals. This character is actually bound to
  619. `set-mark-command'.  But unless you are unlucky enough to have a
  620. terminal where typing `C-SPC' does not produce `C-@', you should think
  621. of this character as `C-SPC'.
  622.    Since terminals have only one cursor, Emacs cannot show you where the
  623. mark is located. Most people use the mark soon after they set it, before
  624. they forget where it is. But you can see where the mark is with the
  625. command `C-x C-x' (`exchange-point-and-mark') which puts the mark where
  626. point was and point where the mark was.  The extent of the region is
  627. unchanged, but the cursor and point are now at the previous location of
  628. the mark.
  629.    Another way to set the mark is to push the mark to the beginning of a
  630. buffer while leaving point at its original location. If you supply an
  631. argument to `C-<' (`mark-bob'), the mark is pushed N/10 of the way from
  632. the true beginning of the buffer. You can also set the mark at the end
  633. of a buffer with `C->' (`mark-eob'). It pushes the mark to the end of
  634. the buffer, leaving point alone. Supplying an argument to the command,
  635. pushes the mark N/10 of the way from the true end of the buffer.
  636.    If you are using Lucid GNU Emacs under the X window system, you can
  637. set the variable `zmacs-regions' to `t'. This makes the current region
  638. (defined by point and mark) highlight and makes it available as the X
  639. clipboard selection, which means you can use the menu bar items on it.
  640. *Note Active Regions:: for more information.
  641.    `C-x C-x' is also useful when you are satisfied with the location of
  642. point but want to move the mark; do `C-x C-x' to put point there and
  643. then you can move it.  A second use of `C-x C-x', if necessary, puts
  644. the mark at the new location with point back at its original location.
  645. * Menu:
  646. * Active Regions::  Having the region highlight while working under X.
  647. File: lemacs,  Node: Using Region,  Next: Marking Objects,  Prev: Setting Mark,  Up: Mark
  648. Operating on the Region
  649. -----------------------
  650.    Once you have created an active region, you can do many things to
  651. the text in it:
  652.    * Kill it with `C-w' (*note Killing::.).
  653.    * Save it in a register with `C-x x' (*note Registers::.).
  654.    * Save it in a buffer or a file (*note Accumulating Text::.).
  655.    * Convert case with `C-x C-l' or `C-x C-u'
  656.      (*note Case::.).
  657.    * Evaluate it as Lisp code with `M-x eval-region' (*note Lisp
  658.      Eval::.).
  659.    * Fill it as text with `M-g' (*note Filling::.).
  660.    * Print hardcopy with `M-x print-region' (*note Hardcopy::.).
  661.    * Indent it with `C-x TAB' or `C-M-\' (*note Indentation::.).
  662. File: lemacs,  Node: Marking Objects,  Next: Mark Ring,  Prev: Using Region,  Up: Mark
  663. Commands to Mark Textual Objects
  664. --------------------------------
  665.    There are commands for placing point and the mark around a textual
  666. object such as a word, list, paragraph or page.
  667. `M-@'
  668.      Set mark after end of next word (`mark-word').  This command and
  669.      the following one do not move point.
  670. `C-M-@'
  671.      Set mark after end of next Lisp expression (`mark-sexp').
  672. `M-h'
  673.      Put region around current paragraph (`mark-paragraph').
  674. `C-M-h'
  675.      Put region around current Lisp defun (`mark-defun').
  676. `C-x h'
  677.      Put region around entire buffer (`mark-whole-buffer').
  678. `C-x C-p'
  679.      Put region around current page (`mark-page').
  680.    `M-@' (`mark-word') puts the mark at the end of the next word, while
  681. `C-M-@' (`mark-sexp') puts it at the end of the next Lisp expression.
  682. These characters sometimes save you some typing.
  683.    A number of commands are available that set both point and mark and
  684. thus delimit an object in the buffer.  `M-h' (`mark-paragraph') moves
  685. point to the beginning of the paragraph that surrounds or follows
  686. point, and puts the mark at the end of that paragraph (*note
  687. Paragraphs::.).  You can then indent, case-convert, or kill the whole
  688. paragraph.  In the same fashion, `C-M-h' (`mark-defun') puts point
  689. before and the mark after the current or following defun (*note
  690. Defuns::.).  `C-x C-p' (`mark-page') puts point before the current page
  691. (or the next or previous, depending on the argument), and mark at the
  692. end (*note Pages::.).  The mark goes after the terminating page
  693. delimiter (to include it), while point goes after the preceding page
  694. delimiter (to exclude it).  Finally, `C-x h' (`mark-whole-buffer') sets
  695. up the entire buffer as the region by putting point at the beginning
  696. and the mark at the end.
  697. File: lemacs,  Node: Mark Ring,  Prev: Marking Objects,  Up: Mark
  698. The Mark Ring
  699. -------------
  700.    Aside from delimiting the region, the mark is also useful for marking
  701. a spot that you may want to go back to.  To make this feature more
  702. useful, Emacs remembers 16 previous locations of the mark in the "mark
  703. ring".  Most commands that set the mark push the old mark onto this
  704. ring.  To return to a marked location, use `C-u C-SPC' (or `C-u C-@');
  705. this is the command `set-mark-command' given a numeric argument.  The
  706. command moves point to where the mark was, and restores the mark from
  707. the ring of former marks. Repeated use of this command moves point to
  708. all the old marks on the ring, one by one.  The marks you have seen go
  709. to the end of the ring, so no marks are lost.
  710.    Each buffer has its own mark ring.  All editing commands use the
  711. current buffer's mark ring.  In particular, `C-u C-SPC' always stays in
  712. the same buffer.
  713.    Many commands that can move long distances, such as `M-<'
  714. (`beginning-of-buffer'), start by setting the mark and saving the old
  715. mark on the mark ring.  This makes it easier for you to move back
  716. later.  Searches set the mark, unless they do not actually move point.
  717. When a command sets the mark, `Mark Set' is printed in the echo area.
  718.    The variable `mark-ring-max' is the maximum number of entries to
  719. keep in the mark ring.  If that many entries exist and another entry is
  720. added, the last entry in the list is discarded.  Repeating `C-u C-SPC'
  721. circulates through the entries that are currently in the ring.
  722.    The variable `mark-ring' holds the mark ring itself, as a list of
  723. marker objects in the order most recent first.  This variable is local
  724. in every buffer.
  725. File: lemacs,  Node: Mouse Selection,  Next: Entering Emacs,  Prev: Pull-Down Menus,  Up: Top
  726. Selecting Text with the Mouse
  727. =============================
  728.    If you are using Lucid GNU Emacs under X, you can use the mouse
  729. cursor to select text. There are two mouse cursor shapes:
  730.    * When the mouse cursor is over text, it appears as an I-beam, the
  731.      same cursor that `xterm' uses.
  732.    * When the mouse cursor is not over text, it appears as a plus sign
  733.      (+).
  734.    You can set the value of the variable `x-mode-pointer-shape' to
  735. determine the shape of the mouse pointer when it is over the modeline.
  736. If the value is `nil', the variable `x-nontext-pointer-shape' or the
  737. variable `x-pointer-shape' is used.
  738.    If you want to get fancy, you can set the foreground and background
  739. colors of the mouse pointer with the variables
  740. `x-pointer-background-color' and `x-pointer-foreground-color'.
  741.    There are two ways to select a region of text with the mouse:
  742.    To select a word in text, double click with the left mouse button
  743. while the mouse cursor is over the word.  The word is highlighted when
  744. selected. On monochrome monitors, a stipled background indicates that a
  745. region of text has been highlighted. On color monitors, a color
  746. background indicates highlighted text. You can triple-click to select
  747. whole lines.
  748.    To select an arbitrary region of text:
  749.   1. Move the mouse cursor over the character at the beginning of the
  750.      region of text you want to select.
  751.   2. Press and hold the left mouse button.
  752.   3. While holding the left mouse button down, drag the cursor to the
  753.      character at the end of the region of text you want to select.
  754.   4. Release the left mouse button.
  755.         The selected region of text is highlighted.
  756.    Once a region of text is selected, it becomes the primary X selection
  757. (*note Using X Selections::.) as well as the Emacs selected region. You
  758. can paste it into other X applications and use the options from the
  759. Edit pull-down menu on it.  Since it is also the Emacs region, you can
  760. use Emacs region commands on it.
  761. Additional Mouse Operations
  762. ---------------------------
  763.    Lucid GNU Emacs also provides the following mouse functions.  Most
  764. of these are not bound to mouse gestures by default, but they are
  765. provided for your customization pleasure.  For example, if you wanted
  766. `shift-left' (that is, holding down the shift key and clicking the left
  767. button) to delete the character at which you are pointing, then you
  768. could do this:
  769.      (global-set-key '(shift button1) 'mouse-del-char)
  770. `mouse-del-char'
  771.      Delete the character pointed to by the mouse.
  772. `mouse-delete-window'
  773.      Delete the Emacs window that the mouse is on.
  774. `mouse-keep-one-window'
  775.      Select the Emacs window that the mouse is on, then delete all other
  776.      windows on this screen.
  777. `mouse-kill-line'
  778.      Kill the line pointed to by the mouse.
  779. `mouse-line-length'
  780.      Print the length of the line indicated by the pointer.
  781. `mouse-scroll'
  782.      Scroll point to the mouse position.
  783. `mouse-select'
  784.      Select the Emacs window the mouse is on.
  785. `mouse-select-and-split'
  786.      Select the Emacs window mouse is on, then split it vertically in
  787.      half.
  788. `mouse-set-mark'
  789.      Select the Emacs window the mouse is on and set the mark at the
  790.      mouse position.  Display the cursor at that position for a second.
  791. `mouse-set-point'
  792.      Select the Emacs window that the mouse is on and move point to the
  793.      mouse position.
  794. `mouse-track'
  795.      Make a selection with the mouse.   This is the default binding of
  796.      the left mouse button (button1).
  797. `mouse-track-adjust'
  798.      Extend the existing selection.  This is the default binding of
  799.      shift-button1.
  800. `mouse-track-and-copy-to-cutbuffer'
  801.      Make a selection like `mouse-track', but also copy it to the cut
  802.      buffer.
  803. `mouse-track-delete-and-insert'
  804.      Make a selection with the mouse and insert it at point.  This is
  805.      the default binding of control-shift-button1.
  806. `mouse-track-insert'
  807.      Make a selection with the mouse and insert it at point.  This is
  808.      the default binding of control-button1.
  809. `mouse-window-to-region'
  810.      Narrow a window to the region between the cursor and the mouse
  811.      pointer.
  812.    The `M-x mouse-track' command should be bound to a mouse button.  If
  813. you click-and-drag, the selection is set to the region between the
  814. point of the initial click and the point at which you release the
  815. button.  These positions do not need to be ordered.
  816.    If you click-and-release without moving the mouse, the point is
  817. moved, and the selection is disowned (there will be no selection
  818. owner.)  The mark will be set to the previous position of point.
  819.    If you double-click, the selection will extend by symbols instead of
  820. by characters.  If you triple-click, the selection will extend by lines.
  821.    If you drag the mouse off the top or bottom of the window, you can
  822. select pieces of text that are larger than the visible part of the
  823. buffer; the buffer will scroll as necessary.
  824.    The selected text becomes the current X selection, and is also
  825. copied to the top of the kill ring.  Point will be left at the position
  826. at which you released the button and the mark will be left at the
  827. initial click position.  Bind a mouse click to
  828. `mouse-track-and-copy-to-cutbuffer' to copy selections to the cut
  829. buffer.
  830.    See also the `mouse-track-adjust' command, on `Sh-button1'.
  831.    The `M-x mouse-track-adjust' command should be bound to a mouse
  832. button.  The selection will be enlarged or shrunk so that the point of
  833. the mouse click is one of its endpoints.  This is only meaningful after
  834. the `mouse-track' command (button1) has been executed.
  835.    The `M-x mouse-track-delete-and-insert' command is exactly the same
  836. as the `mouse-track' command on button1, except that point is not
  837. moved; the selected text is immediately inserted after being selected;
  838. and the text of the selection is deleted.
  839.    The `M-x mouse-track-insert' command is exactly the same as the
  840. `mouse-track' command on button1, except that point is not moved; the
  841. selected text is immediately inserted after being selected; and the
  842. selection is immediately disowned afterwards.
  843.